﻿//Dùng tại frmDoanhThuLD

using System;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraReports.UI;
using DevExpress.XtraReports.Parameters;
using prjKQXS_DLL;
using prjKQXS_DLL.Doanh_thu;

namespace prjKQXS_Report.Doanh_thu
{
    public partial class rptDTLuuDong_LT : DevExpress.XtraReports.UI.XtraReport
    {
        //Cài đặt event
        public delegate void OnLoadCompleteHandler();
        public event OnLoadCompleteHandler OnLoadComplete;

        dsReports dsReports1 = new dsReports();

        public rptDTLuuDong_LT()
        {
            InitializeComponent();
        }

        private void rptDTLuuDong_LT_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            clsDoanhThu cls = new clsDoanhThu();
            cls.OnAction += new clsDoanhThu.OnActionHandler(cls_OnAction);
            cls.OnError += new clsDoanhThu.OnErrorHandler(cls_OnError);

            string SoHT = "";
            DataTable dt = cls.loadData_rptDTLuuDong_LT((char)pMaDV.Value, (int)pDMCanBoID.Value, (DateTime)pTuNgay.Value, (DateTime)pDenNgay.Value, ref SoHT);
            dsReports1.Tables.Remove("rptTHDTLuuDong");
            dsReports1.Tables.Add(dt);
            this.DataSource = dsReports1;
            this.DataMember = "rptTHDTLuuDong";

            //Đoạn này để ẩn hiện cột Mã đại lý và cột Tỷ lệ theo 2 trường hợp:
            //- Nếu xem 1 tháng thì hiện;
            //- Nếu xem nhiều tháng thì ẩn.
            bool isViewOneMonth = (((DateTime)pTuNgay.Value).Month == ((DateTime)pDenNgay.Value).Month)
                && (((DateTime)pTuNgay.Value).Year == ((DateTime)pDenNgay.Value).Year);  //Nếu là xem 1 tháng
            if (!isViewOneMonth)
            {
                xrTable1.DeleteColumn(xrtcMaDL1);
                xrTable13.DeleteColumn(xrtcMaDL3);
                xrTable3.DeleteColumn(xrtcTyLe1);
                xrTable5.DeleteColumn(xrtcTyLe3);
                xrTable15.DeleteColumn(xrtcTyLe4);
                xrtcTenDL.WidthF -= 1;
            }

            if ((DateTime)pTuNgay.Value == (DateTime)pDenNgay.Value)
                xrlblNgay.Text = "Ngày " + ((DateTime)pTuNgay.Value).ToString("dd/MM/yyyy");
            else
                xrlblNgay.Text = "Từ ngày " + ((DateTime)pTuNgay.Value).ToString("dd/MM/yyyy")
                    + " đến ngày " + ((DateTime)pDenNgay.Value).ToString("dd/MM/yyyy");

        }

        int stt = 0;
        private void GroupHeader1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            stt++;
            xrtcSTT.Text = stt.ToString();
        }

        #region cls event --------------------------------------------
        private void cls_OnAction(SqlException e)
        {
            XtraMessageBox.Show("Một lỗi chưa được xử lý đã xảy ra. Chi tiết lỗi: \n" + e.Message, "SqlException", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.ClosePreview();
        }

        private void cls_OnError(Exception e)
        {
            XtraMessageBox.Show("Một lỗi chưa được xử lý đã xảy ra. Chi tiết lỗi: \n" + e.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.ClosePreview();
        }
        #endregion ---------------------------------------------------

        private void rptDTLuuDong_LT_AfterPrint(object sender, EventArgs e)
        {
            OnLoadComplete();
        }

        #region Đoạn này để không in ra các tổng HH bằng 0 -------------------------------------
        //Dùng chung cho xrtcDTTruyenThong, xrtcHHTruyenThong, xrtcDTBoc, xrtcHHBoc, xrtcTongDT, xrtcTongHH
        decimal Truyen_Thong, Hoa_Hong, Boc, Hoa_Hong2, Tong_DoanhThu, Tong_Tien;

        private void summaryGetResult(object sender, SummaryGetResultEventArgs e)
        {
            string dataMember = ((XRTableCell)sender).DataBindings[0].DataMember;
            int dot = dataMember.IndexOf('.');
            dataMember = dataMember.Substring(dot + 1, dataMember.Length - dot - 1);

            decimal value = 0;
            if (dataMember == "Truyen_Thong")
                value = Truyen_Thong;
            else if (dataMember == "Hoa_Hong") value = Hoa_Hong;
            else if (dataMember == "Boc") value = Boc;
            else if (dataMember == "Hoa_Hong2") value = Hoa_Hong2;
            else if (dataMember == "Tong_DoanhThu") value = Tong_DoanhThu;
            else if (dataMember == "Tong_Tien") value = Tong_Tien;

            e.Handled = value == 0;
        }

        private void summaryReset(object sender, EventArgs e)
        {
            Truyen_Thong = 0;
            Hoa_Hong = 0;
            Boc = 0;
            Hoa_Hong2 = 0;
            Tong_DoanhThu = 0;
            Tong_Tien = 0;
        }

        private void summaryRowChanged(object sender, EventArgs e)
        {
            Truyen_Thong += clsCommon.getDecimal(GetCurrentColumnValue("Truyen_Thong"));
            Hoa_Hong += clsCommon.getDecimal(GetCurrentColumnValue("Hoa_Hong"));
            Boc += clsCommon.getDecimal(GetCurrentColumnValue("Boc"));
            Hoa_Hong2 += clsCommon.getDecimal(GetCurrentColumnValue("Hoa_Hong2"));
            Tong_DoanhThu += clsCommon.getDecimal(GetCurrentColumnValue("Tong_DoanhThu"));
            Tong_Tien += clsCommon.getDecimal(GetCurrentColumnValue("Tong_Tien"));
        }
        #endregion -----------------------------------------------------------------------------
    }
}
